package top.firejames.util;

/**
 * @auther 夏浩
 * @creat 2021-09-2021/9/24-10:27
 */
import java.util.Arrays;

/**
 * 数组工具类
 */
public class ArrayUtils {

    /**
     * 判空
     * @param data
     * @return
     */
    public static boolean empty(int[] data) {
        if (data == null || data.length == 0) return true;
        return false;
    }

    /**
     * 数组交换
     * @param data
     * @param i
     * @param j
     */
    public static void swap(int[] data, int i, int j) {
        if (i < 0 || j < 0) return;
        if (i > data.length - 1 || j > data.length - 1) return;
        int temp = data[i];
        data[i] = data[j];
        data[j] = temp;
    }

    /**
     * 翻转
     * @param data
     */
    public static void reverse(int[] data) {
        reverse(data, 0, data.length - 1);
    }

    /**
     * 翻转【start, end】之间的值
     * @param data
     * @param start 开始下标
     * @param end 末尾下标
     */
    public static void reverse(int[] data, int start, int end) {
        if (start > end) return;
        for (int i = start; i <= (start + end) / 2; i++) {
            swap(data, i, (end - i));
        }
    }




    /**
     * 寻找插入的index并保持有序
     * @param data
     * @param num
     * @return
     */
    public static int findInsertIndexForSort(int[] data, int num) {
        return findInsertIndexForSort(data, num, 0, data.length - 1);
    }

    /**
     * 寻找【start, end】之间插入的index并保持有序
     * @param data
     * @param num
     * @param start
     * @param end
     * @return
     */
    public static int findInsertIndexForSort(int[] data, int num, int start, int end) {
        while (start <= end && num > data[end]) {
            end--;
        }
        return end + 1;
    }


    public static void main(String[] args) {
        int[] data = {2, 3, 4, 5, 6, 1, 7};
        reverse(data, 0, 3);
        System.out.println(Arrays.toString(data));
    }
}
